#ifndef _TLOG_INTERNAL_H
#define	_TLOG_INTERNAL_H

#include "tlog.h"

// ThePlayer
// Тут, по-моему, тоже небольшие различия
#ifdef __APPLE__
#include <sys/time.h>
#endif
#ifdef __LINUX__
#include <time.h>
#endif

#include <pthread.h>

// ThePlayer
// POSIX POSIX'ом, а вот clock_gettime() есть не у всех
#ifdef __APPLE__
#define CLOCK_REALTIME 0

void clock_gettime(int clk_id, struct timespec* tp)
{
	struct timeval timeValue;
	gettimeofday(&timeValue, NULL);
	TIMEVAL_TO_TIMESPEC(&timeValue, tp);
}
#endif

struct tlog_entry
{
	struct timespec timestamp;
	pthread_t id;
	int level;
	char* buffer;
	pthread_mutex_t lock;
};

struct tlog_instance
{
	struct tlog_options opts;
	int fd;
	struct tlog_entry *ring;
	int read_ptr;
	int write_ptr;
	pthread_t writer;
	pthread_mutex_t ptrs_mutex;
	pthread_cond_t not_empty_cond;
	pthread_cond_t not_full_cond;
	int shutdown;
};

#endif	/* _TLOG_INTERNAL_H */
